/*
 * @lc app=leetcode.cn id=205 lang=rust
 *
 * [205] 同构字符串
 */

// @lc code=start
impl Solution {
    pub fn is_isomorphic(s: String, t: String) -> bool {
        use std::collections::HashMap;

        if(s.len() != t.len())
        {
            return false;
        }
        if(s.len() == 0)
        {
            return true;
        }
        let mut map1 = HashMap::new();
        let mut map2 = HashMap::new();

        let mut inx = 0;

        for i in 0..s.len(){
            let c1 = s.chars().nth(i);
            let c2 = t.chars().nth(i);
            if(map1.contains_key(&c1) && !map2.contains_key(&c2))
            {//1存在，2不存在
                return false;
            }
            else if(!map1.contains_key(&c1) && map2.contains_key(&c2))
            {//1不存在，2存在
                return false;
            }
            else if(!map1.contains_key(&c1))//二者都不存在
            {
                map1.insert(c1, i);
                map2.insert(c2, i);
            }
            else//二者都存在
            {
                if(map1.get(&c1) != map2.get(&c2))
                {
                    return false;
                }
            }
        }
        return true;
    }
}
// @lc code=end

